Skip to main content
Your endpoint serves one catalog API. AnyAPI sends it signed POST requests in that API’s canonical input format; your endpoint answers in the canonical output format. This page is the whole contract.

The request you receive

AnyAPI POSTs the API’s input as JSON to your registered path (default /run):
The body always matches the API’s input JSON Schema. Read it (and the output schema) from the catalog:
The response includes inputSchema and outputSchema — the same schemas the compatibility checks and the live trial judge against. The register dialog in the dashboard shows them too. Redirects are never followed, so answer directly at the registered URL.

Verifying the signature (required)

Every request carries four headers: Recompute the signature over the canonical string — five dot-joined parts:
where method is POST, path is your registered path, and sha256hex(body) is the lowercase-hex SHA-256 of the raw body bytes. HMAC-SHA256 that string with the signing secret you got at registration, compare against the header in constant time, reject timestamps older than about 5 minutes, and remember nonces for that window to block replays. Reject failures with 401 and never process an unverified body.
Rotating the secret (dashboard → endpoint → Rotate secret, or POST /v1/operator/endpoints/{id}/rotate-secret) starts a 24-hour window where both the old and new secret verify, so you can roll your deployment without dropping requests.

The response you must return

Reply 2xx with JSON that validates against the API’s output schema. The envelope is always:
  • Extra fields are welcome; missing declared fields fail. You can return more than the schema declares (it’s preserved for the customer), but every declared field must be present.
  • No result is not an error. When the entity legitimately doesn’t exist, return the schema’s found: false shape with a 2xx — that’s a valid, billable answer.
  • A non-2xx status, output that doesn’t validate, or a timeout counts as a failed attempt: the request fails over to another provider, you don’t earn it, and repeated failures pause the endpoint.

Budgets

What the compatibility checks test

When you run the checks from the dashboard (or POST /v1/operator/endpoints/{id}/conformance), AnyAPI fires the API’s schema examples at your endpoint as signed requests and verifies, per request:
  1. HTTP 2xx
  2. Output validates against the output schema
  3. found: true for the example inputs
  4. Answer within the 15-second budget
  5. Body under the 8 MB cap
Every check must pass to enter the live trial. A failed run returns the per-check report so you can fix and rerun — unlimited retries. During the live trial, mirrored requests additionally carry X-AnyAPI-Trial: 1 so you can tell trial traffic from paid traffic in your logs.