generated: '2026-08-14' method: searched source: https://docs.orthogonal.com (api-reference, authentication, quickstart) description: >- Cross-cutting runtime semantics for the Orthogonal API, derived from the developer documentation and the generated OpenAPI. auth: style: bearer-api-key header: 'Authorization: Bearer orth_live_...' env_var: ORTHOGONAL_API_KEY ref: authentication/orthogonal-authentication.yml versioning: style: uri-path current: v1 base_url: https://api.orthogonal.com/v1 pagination: style: limit-offset params: limit: Maximum records to return (list-endpoints max 500; search max 50). offset: Records to skip. response_fields: pagination.hasMore: Whether more records exist. note: Applies to /v1/list-endpoints; /v1/search accepts limit only. request_id: field: requestId location: response body note: Every /v1/run response returns a unique requestId for tracing. error_envelope: shape: '{ "success": false, "error": "", "code": "" }' format: custom-json ref: errors/orthogonal-problem-types.yml idempotency: supported: false note: >- No idempotency key/header is documented. Calls to /v1/run are metered per-execution; there is no documented dedupe/retention window. rate_limiting: documented: false signal: RATE_LIMITED code with HTTP 429 on limit breach. headers: none documented (no RateLimit-*, X-RateLimit-*, Retry-After) ref: rate-limits/orthogonal-rate-limits.yml pricing_signal: field: priceCents location: /v1/run response note: Per-call price returned inline; also available up-front via the MCP quote tool. payments: ref: finops/orthogonal-finops.yml models: - id: credits description: Prepaid balance drawn down per call; price returned inline as priceCents. - id: stablecoin-402 description: >- Pay-per-call over a 402 challenge. The request is answered 402 Payment Required, the client signs a payment and retries, settlement completes before the call runs. Three rails: x402 (USDC/Base, x402.orthogonal.com), MPP (USDC.e/Tempo, mpp.orthogonal.com), np (Circle Gateway nanopayments, x402 v2, np.orthogonal.com). docs: https://docs.orthogonal.com/payments in_band_pricing: extension: x-payment-info source: https://api.orthogonal.com/openapi.json note: >- Every payable operation in the published marketplace OpenAPI carries its own price and its three rail URLs as an x-payment-info block, so an agent can read the cost of a call from the contract without a quote round-trip. billing_dedupe: mechanism: parentRequestId applies_to: pagination continuations (page / offset / cursor) behaviour: >- Pass parentRequestId from the first page's billing.requestId, with all non-pagination parameters unchanged, and the continuation call is charged 0. It still receives its own requestId and quoted price. Changing any filter starts a new billable request. source: https://api.orthogonal.com/openapi.json caution: >- This is NOT idempotency. It suppresses duplicate BILLING on a paged read; it does not deduplicate a retried write, and there is no key, no scope and no retention window. See idempotency above. rails: - credits (prepaid, default) - x402 (USDC on Base) - MPP (USDC.e on Tempo)