Maximos API

Stable, tenant-scoped REST + webhook surface for connecting Maximos to the rest of your stack when you need it. Production base URL: https://app.maximos.ai.

Authentication

All endpoints under /api/v1/* authenticate via Bearer token:

Authorization: Bearer mx_live_<your_key>

Keys are scoped to a single tenant and a list of scopes (e.g. deals:read, decisions:write). Issue your first key from the dashboard at /dashboard/settings/api (admin role). Subsequent keys can also be issued via POST /api/v1/api-keys with an existing admin-scoped key.

The API is an Enterprise feature (api_access) and is rate-limited to 120 requests/minute per key. Over-budget requests return 429 rate_limited with a Retry-After header; tenants without the entitlement receive 402 feature_not_available.

Mutating requests support Idempotency-Key. Replaying the same key within 24 hours returns the original response without re-executing the operation.

Endpoints

MethodPathScopeSummary
GET/api/v1/dealsdeals:readList deals (cursor-paginated)
GET/api/v1/deals/{id}deals:readSingle deal
PATCH/api/v1/deals/{id}deals:writeUpdate a deal
GET/api/v1/scores/{dealId}scores:readLatest score (with previous_score + components)
GET/api/v1/decisions?deal_id=…decisions:readList decisions for a deal
POST/api/v1/decisionsdecisions:writeCreate a decision
GET/api/v1/intelligence/{dealId}intelligence:readIntelligence snapshot (score + signals + contradictions)
GET/api/v1/entitiesentities:readList entities
POST/api/v1/entitiesentities:writeUpsert entity
POST/api/v1/intake/submitintake:writeProgrammatic intake submission
GET/api/v1/searchsearch:readCross-entity search
GET/api/v1/webhooks/subscriptionswebhooks:manageList webhook subscriptions
POST/api/v1/webhooks/subscriptionswebhooks:manageCreate webhook subscription
DELETE/api/v1/webhooks/subscriptionswebhooks:manageRevoke a webhook subscription
POST/api/v1/webhooks/testwebhooks:manageSend synthetic test event
GET/api/v1/api-keysadminList API keys
POST/api/v1/api-keysadminIssue a new API key
DELETE/api/v1/api-keysadminRevoke an API key

Machine-readable spec: /api/v1/openapi.json — drop this into Stoplight, Postman, or your code-gen tool of choice.

Webhooks

When you subscribe via POST /api/v1/webhooks/subscriptions, the response returns an HMAC secret once. Use it to verify each delivery's signature.

Each delivery includes these headers:

Node.js verification:

import { createHmac, timingSafeEqual } from "crypto";

function verify(body: string, header: string, secret: string): boolean {
  const expected = "sha256=" + createHmac("sha256", secret).update(body).digest("hex");
  return timingSafeEqual(Buffer.from(header), Buffer.from(expected));
}

Failed deliveries auto-retry twice with exponential backoff. After 5 consecutive failures the subscription is auto-paused; reactivate by re-POSTing the same target URL.

Errors

All non-2xx responses share a consistent envelope:

{ "error": "quota_exceeded", "message": "Optional human-readable detail" }