openapi: 3.2.0 info: contact: email: support@getanyapi.com description: 'Any API, one wallet, USD, no subscriptions. Each API is a single discovered operation: send the normalized input, get a normalized result. Prices and payment outcomes are reported in USD; each operation documents the settlement policy for its enabled payment rails.' title: Any APIS API version: 1.0.0 x-guidance: 'Use each operation''s published method and path with its normalized JSON input (see the operation requestBody). Before setting a client or tool timeout, GET /v1/apis/{sku} and inspect its trailing-30-day latency p50/p95/p99 and sample; p99 is an observation, not a maximum. To pay: send your AnyAPI key (Authorization: Bearer, billed from your USD wallet). For operations that advertise an inline rail, pay per call inline with x402 - call with no key, receive HTTP 402 with a PAYMENT-REQUIRED header, then retry with the PAYMENT-SIGNATURE header (base, no account needed); or pay per call inline with MPP (Machine Payments Protocol) - call with no key, receive HTTP 402 with a WWW-Authenticate: Payment challenge, then retry with the Authorization: Payment header (tempo, no account needed). x402 settles after execution; execution failure is reported as released; mpp settles before execution; execution failure is reported as charged_undelivered.' servers: - url: https://api.getanyapi.com security: - bearerAuth: [] - apiKeyAuth: [] tags: - name: APIs paths: /v1/apis: get: description: The same catalog as GET /catalog, without measured source health, for a caller that is choosing an API to run rather than displaying uptime. Schemas are omitted; GET /v1/apis/{sku} returns them for one API. operationId: listApis parameters: - description: Restrict the response to one category, using an entry's `category`. in: query name: category required: false schema: type: string responses: '200': content: application/json: schema: properties: apis: items: $ref: '#/components/schemas/APISummary' type: array required: - apis type: object description: The APIs available to your key. '401': content: application/json: schema: $ref: '#/components/schemas/Error' description: Missing or invalid API key. summary: List the APIs you can run tags: - APIs /v1/apis/{sku}: get: description: 'One API''s full contract: its normalized `inputSchema` and `outputSchema`, its USD pricing, the sources behind it, and its trailing-30-day latency distribution. Build your input from `inputSchema` rather than from the description: the schema is strict, so an invented field name fails the call. The latency percentiles are observations of past successful runs, not execution ceilings.' operationId: getApi parameters: - description: The API's slug, as published by discovery (for example `reddit.search`). in: path name: sku required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/APIDetail' description: The API's full contract. '401': content: application/json: schema: $ref: '#/components/schemas/Error' description: Missing or invalid API key. '404': content: application/json: schema: $ref: '#/components/schemas/Error' description: Unknown slug, or an API no source can serve. summary: Get one API tags: - APIs components: schemas: APISummary: properties: beta: description: 'Present when this API is published as beta. A maturity label only: a beta API routes, serves and bills exactly like any other.' type: boolean category: description: The API's category, accepted back as the `category` scope. type: string description: description: One-line summary of what this API returns. type: string excludesCallerDelay: description: Present when this API accepts a caller-requested wait. The published latency is net of that wait, so a caller who uses it measures a longer time. type: boolean execution: allOf: - $ref: '#/components/schemas/DiscoveryExecution' description: The runtime protocol a run of this API follows. failover: description: True when more than one source can serve this API, so a failed attempt is retried on another. Derived from the published sources, never authored. type: boolean heavy: description: True when a typical response is large enough to strain an agent's context window. Reach for the run response-budget controls (fields, max_items, summary, jq) before the first call. type: boolean id: description: Stable identifier for this API. type: string lanes: description: The sources that can serve this API, cheapest customer charge first. Each carries its own price and its own public identity. items: $ref: '#/components/schemas/APISourceOffer' type: array method: description: 'HTTP method for this API''s concrete operation. Gateway authority: use it rather than assuming one.' type: string name: description: Display name. type: string path: description: 'Concrete gateway path for this API. Gateway authority: use it rather than rebuilding a route from the slug.' type: string pricing: allOf: - $ref: '#/components/schemas/DiscoveryPricing' description: Static USD pricing for this API. provider: const: AnyAPI description: Always "AnyAPI". AnyAPI is the provider of record for every API in the catalog. type: string slug: description: The API's slug. Use it as {sku} on GET /v1/apis/{sku} and POST /v1/run/{sku}. type: string tryEligible: description: True when this API can be run from the free public try surface. type: boolean tryMaxItems: description: The most items the free try returns. Present only when tryEligible is true, so a limit is never advertised for an API the public tool will refuse. type: integer required: - id - slug - category - name - description - method - path - provider - execution - pricing - lanes - tryEligible - failover type: object DiscoveryExecution: properties: mode: description: sync answers on the run request; durable accepts the run as a Request you poll at GET /v1/requests/{id}. enum: - sync - durable type: string required: - mode type: object DiscoveryPricing: properties: failoverMaxPer1kUsd: description: failoverMaxUsd in the per-1,000-request denomination. type: number failoverMaxUsd: description: The greatest customer-price maximum across those same sources, in USD. type: number from: allOf: - $ref: '#/components/schemas/DiscoveryOffer' description: The complete offer for the first source that will be tried, where sources are ordered by the customer charge, cheapest first. required: - from - failoverMaxUsd - failoverMaxPer1kUsd type: object APISourceOffer: properties: pricing: allOf: - $ref: '#/components/schemas/DiscoveryOffer' description: This source's own customer price. source: allOf: - $ref: '#/components/schemas/DiscoverySource' description: This source's public identity. required: - pricing - source type: object Payment: properties: costUsd: description: Known USD payment amount for this request. minimum: 0 type: number rail: minLength: 1 type: string settlementState: enum: - charged_undelivered - indeterminate type: string required: - rail - settlementState - costUsd type: object APIDetail: properties: beta: description: 'Present when this API is published as beta. A maturity label only: a beta API routes, serves and bills exactly like any other.' type: boolean category: description: The API's category, accepted back as the `category` scope. type: string description: description: One-line summary of what this API returns. type: string excludesCallerDelay: description: Present when this API accepts a caller-requested wait. The published latency is net of that wait, so a caller who uses it measures a longer time. type: boolean execution: allOf: - $ref: '#/components/schemas/DiscoveryExecution' description: The runtime protocol a run of this API follows. failover: description: True when more than one source can serve this API, so a failed attempt is retried on another. Derived from the published sources, never authored. type: boolean heavy: description: True when a typical response is large enough to strain an agent's context window. Reach for the run response-budget controls (fields, max_items, summary, jq) before the first call. type: boolean howItWorks: description: Authored prose explaining how this API produces its result. Absent when unauthored. type: string id: description: Stable identifier for this API. type: string inputSchema: description: 'This API''s normalized input as a JSON Schema document. It is strict: build the run body from it, because an invented field name fails the call.' type: object lanes: description: The sources that can serve this API, cheapest customer charge first. Each carries its own price and its own public identity. items: $ref: '#/components/schemas/APISourceOffer' type: array latency: anyOf: - $ref: '#/components/schemas/DiscoveryLatency' - type: 'null' description: Trailing-window distribution of successful runs, or null when there are too few observations to publish. method: description: 'HTTP method for this API''s concrete operation. Gateway authority: use it rather than assuming one.' type: string name: description: Display name. type: string outputSchema: description: This API's normalized output as a JSON Schema document. type: object path: description: 'Concrete gateway path for this API. Gateway authority: use it rather than rebuilding a route from the slug.' type: string pricing: allOf: - $ref: '#/components/schemas/DiscoveryPricing' description: Static USD pricing for this API. provider: const: AnyAPI description: Always "AnyAPI". AnyAPI is the provider of record for every API in the catalog. type: string slug: description: The API's slug. Use it as {sku} on GET /v1/apis/{sku} and POST /v1/run/{sku}. type: string tryEligible: description: True when this API can be run from the free public try surface. type: boolean tryMaxItems: description: The most items the free try returns. Present only when tryEligible is true, so a limit is never advertised for an API the public tool will refuse. type: integer required: - id - slug - category - name - description - method - path - provider - execution - pricing - lanes - tryEligible - failover - latency type: object DiscoverySource: properties: artworkKey: description: Key for this source's artwork. type: string id: description: Stable identifier for this source. type: string kind: description: anonymous is a stable identity for an unattributed source; brand names the dataset that supplies the data. enum: - anonymous - brand type: string name: description: Display name for this source. type: string required: - id - name - kind - artworkKey type: object DiscoveryOffer: properties: baseUsd: description: 'Linear offers only: USD charged for the call before per-unit billing.' type: number maxPer1kUsd: description: The same maximum in the per-1,000-request denomination AnyAPI quotes customers in. It is published rather than left to the client, so display this figure instead of scaling a price yourself. type: number maxUsd: description: The most one request on this offer can be billed, in USD. type: number model: description: Pricing model. A flat offer is one price per request; a linear offer also carries baseUsd and perUnitUsd. enum: - flat - linear type: string perUnitUsd: description: 'Linear offers only: USD charged for each billable unit inside the call.' type: number unit: description: The billable unit. A flat offer always publishes "request". type: string required: - model - unit - maxUsd - maxPer1kUsd type: object DiscoveryLatency: properties: basis: const: service_time_excludes_caller_requested_delay description: Machine-readable definition of what these percentiles measure. type: string p50Ms: description: Median successful end-to-end service time, in milliseconds. type: integer p95Ms: description: 95th percentile successful end-to-end service time, in milliseconds. type: integer p99Ms: description: 99th percentile successful end-to-end service time, in milliseconds. An observation, not a maximum. type: integer sample: description: Successful executions behind these percentiles. type: integer window: const: 30d description: The trailing window these percentiles cover. type: string required: - window - p50Ms - p95Ms - p99Ms - sample - basis type: object Error: properties: code: description: Stable machine-readable error code when the endpoint defines one. type: string error: description: Customer-safe error message. type: string payment: $ref: '#/components/schemas/Payment' requestId: description: This run's AnyAPI request id, the same value as the X-Anyapi-Request-Id response header. Quote it to support. Absent on endpoints that do not execute a run. format: uuid type: string required: - error type: object securitySchemes: apiKeyAuth: description: Your AnyAPI key. in: header name: X-API-Key type: apiKey x-default: YOUR_ANYAPI_KEY bearerAuth: description: Your AnyAPI key as a Bearer token. scheme: bearer type: http x-default: YOUR_ANYAPI_KEY